//author:jxx
//此处是对表单的方法，组件，权限操作按钮等进行任意扩展(方法扩展可参照SellOrder.js)
let extension = {
  components: {//动态扩充组件或组件路径
    //表单header、content、footer对应位置扩充的组件
    gridHeader: '',//{ template: "<div>扩展组xx件</div>" },
    gridBody: '',
    gridFooter: '',
    //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  data () {
    return {
      tabledata: [],
      // getVueDictionary: []
    }
  },
  buttons: { view: [], box: [], detail: [] },//扩展的按钮
  methods: {//事件扩展
    getFormOption (field) {
      let option;
      this.editFormOptions.forEach(x => {
        x.forEach(item => {
          if (item.field == field) {
            option = item;
          }
        })
      })
      return option;
    },
    onInit () {
      this.maxBtnLength = 5;
      //点击单元格编辑与结束编辑(默认是点击单元格编辑，鼠标离开结束编辑)
      this.detailOptions.clickEdit = true;
      // label宽度
      this.boxOptions.labelWidth = 100
      // 弹框宽高度
      this.boxOptions.width = 1000
      this.boxOptions.height = 530;
      // 开启单选
      ////;
      // 内容超出后自动换行
      this.textInline = true;
      // 不显示多选框
      // this.ck = false;
      // // 显示序号
      // this.columnIndex = true;

      // 选择类型对应属性值动态变化
      // this.http.post("/api/Dictionary/GetVueDictionary", ["mall_type", "week_type"]).then(res => {
      //     this.getVueDictionary = res
      // })

      // 增加编辑按钮
      // this.columns.push({
      //     title: '操作',
      //     fixed: 'right',
      //     width: 140,
      //     render: (h, { row, column, index }) => {
      //         return h(
      //             "div", { style: {} }, [
      //                 h(
      //                     "a", {
      //                         props: {},
      //                         style: {},
      //                         on: {
      //                             click: (e) => {
      //                                 this.linkData(row);
      //                             }
      //                         }
      //                     },
      //                     "编辑"
      //                 ),
      //             ])
      //     }
      // })
    },
    onInited () {
      //    let starttime="";
      //    let endtime="";
      //onInited方法设置从表编辑时实时计算值
      // this.detailOptions.columns.forEach(x => {
      //     if (x.field == 'dateStartTime') {
      //         //强烈建议此处将eidt设置为null不开启编辑
      //         x.onChange = (val, item) => {  
      //             starttime=val
      //             console.log("开始时间：",starttime)
      //             console.log("结束时间：",endtime)
      //             console.log("改变日期时间")
      //             return false;
      //          } 
      //         x.validate=(val                                                                                                                                   )=>{

      //             console.log("自定义验证")
      //         } 
      //     }
      //     if (x.field == 'dateEndTime') {

      //         //强烈建议此处将eidt设置为null不开启编辑
      //         x.onChange = (val, item) => {  
      //             endtime=val;
      //             console.log("开始时间：",starttime)
      //             console.log("结束时间：",endtime)
      //             console.log("改变日期时间")
      //          }
      //     }
      // })
    },

    rowClick ({ row, column, event }) { //查询界面table点击行选中当前行
      //console.log(row,column,event);
      this.$refs.table.$refs.table.toggleRowSelection(row);
      return true;
    },
    getDate (p) {
      this.http.post("api/Mall_date/GetDateList?id=" + p, {}, true).then(reslut => {
        this.tabledata = reslut.data
      })
    },
    //    modelOpenBefore(row) {
    //     //动态隐藏、显示下拉框的数据源(2021.05.16更新后volform.vue才能使用)
    //     this.editFormOptions.forEach(x => {
    //       x.forEach(item => {
    //         if (item.field == "attributesType") {
    //           var kvItem = item.data.find(x => { return x.key == "1117" });
    //           if (kvItem) {
    //             //新建时间隐藏数据源字典==1的下拉项
    //             this.$set(kvItem, "hidden", this.currentAction == "Add")
    //           }
    //         }
    //       })
    //     })
    //   },
    modelOpenAfter (row) {
      //获取当前弹出框是新建还是编辑状态
      let isEDIT = this.currentAction == this.const.EDIT;
      //新建时属性名称,类型可操作  编辑时改为只读
      let attributesName = this.getFormOption('attributesName');//属性名称
      let attributesType = this.getFormOption('attributesType');//类型
      // this.$set(attributesName, "disabled", isEDIT)
      this.$set(attributesType, "disabled", isEDIT)
      this.hasDetail = true
      this.detail.isDetail = true//从表是否可以控制显隐
      this.detail.isDetails = true//从表显示

      if (!isEDIT) {
        // 新建
        // console.log("aa", this.base);
        let attributeValue = this.getFormOption('attributeValue');
        this.$set(attributeValue, "hidden", true)
        // 给类型绑定change事件
        attributesType.onChange = (val, item) => {
          console.log(val, item)
          if (val) {
            this.typeChange(val, "add")
            // this.getDate(val);
          }
        }
        // 给属性名称绑定input事件
        attributesName.onInput = (val) => {
          // 转换为拼音
          this.editFormFields.attributesCode = this.base.chineseToPinYin(val);
        }
        // this.tabledata = '';
      } else {
        // 编辑
        console.log("编辑", row);
        this.typeChange(row.attributesType, "update")
    
      }
    },
    // 切换类型
    typeChange (val, type) {
      //清空从表
      if (this.$refs.detail) {
        this.$refs.detail.reset();
      }
      type == "add" ? this.editFormFields.attributeValue = [] : ""
      if (val == "1117") {
        console.log("jin ");
        // 选择类型为年月日时 显示属性值 显示从表
        this.control(false, true)
      } else if (val == "1113") {
        // 选择类型为淡旺季时 隐藏属性值 显示从表
        this.control(true, true)
      } else if (val == "1112") {
        // 选择类型为教学人数时 隐藏属性值 隐藏从表
        this.control(true, false)
        
      }else if (val == 1120) {
        // 选择类型为颜色时 隐藏属性值 隐藏从表
        this.control(true, false)
      }
      else if (val == 1121) {
        // 选择类型为尺码时 隐藏属性值 隐藏从表
        this.control(true, false)
      } 
      else {
        // 选择类型为其他 隐藏属性值 显示从表
        this.control(true, true)
      }e
      // 切换类型 动态改变属性值
      // if (val == "1111") {
      //     type == "update" ? this.editFormFields.attributeValue = this.editFormFields.attributeValue.join() : this.editFormFields.attributeValue = ""
      //     // 选择类型为时段时 显示属性值
      //     this.$set(attributeValue, "hidden", false)
      //     //这个是改单选
      //     this.$set(attributeValue, "type", "radio")
      //     //这个是改绑定的数据
      //     // this.$set(attributeValue, "data", this.getVueDictionary.filter(item => item.dicNo == 'mall_type')[0].data)
      //     this.$set(attributeValue, "data", [{ "key": "1", "value": "上午" }, { "key": "2", "value": "下午" }, { "key": "3", "value": "半天" }, { "key": "4", "value": "全天" },])
      // }  else
    },
    // 根据类型控制属性值和从表的显隐
    control (attribute, fromTable) {
      let attributeValue = this.getFormOption("attributeValue") //属性值
      this.$set(attributeValue, "hidden", attribute)
      // this.$set(attributeValue, "type", "checkbox")
      this.hasDetail = fromTable
      this.detail.isDetails = fromTable
    },
    addBefore (formData) { //新建保存前formData为对象，包括明细表
      return this.veriFromTable(formData)
    },
    updateBefore (formData) { //编辑保存前formData为对象，包括明细表、删除行的Id
      return this.veriFromTable(formData)
    },
    // 保存前编辑  
    veriFromTable (formData) {
      // 将从表中的日期切分为开始日期 和结束日期
      console.log("jinlai", formData);
      if (formData.detailData) {
        for (let index = 0; index < formData.detailData.length; index++) {
          const element = formData.detailData[index];
          if (!element.timeContainer) {
            this.$Message.error("请选择日期起止时间！")
            return false
          } else if (element.timeContainer.length < 1) {
            this.$Message.error("请选择日期起止时间！")
            return false
          } else if (element.timeContainer[0] == "" || element.timeContainer[0] == null) {
            this.$Message.error("请选择日期起止时间！")
            return false
          } else {
            element.dateStartTime = element.timeContainer[0]
            element.dateEndTime = element.timeContainer[1]
          }
        }
      }
      return true
    },
    // 更改表格里的数据显示
    // searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
    //     console.log("主表数据", result);
    //     result.forEach(item => {
    //         if (item.attributesType == "1111") {
    //             if (item.attributeValue == "1") {
    //                 item.attributeValue = "上午"
    //             } else if (item.attributeValue == "2") {
    //                 item.attributeValue = "下午"
    //             } else if (item.attributeValue == "3") {
    //                 item.attributeValue = "半天"
    //             } else if (item.attributeValue == "4") {
    //                 item.attributeValue = "全天"
    //             }
    //         }
    //     })
    //     return true;
    // },
    searchDetailAfter (data) {//查询从表后param查询参数,result回返查询的结果
      console.log("从表数据", data);
      // 将从表中的开始日期 和 结束日期合并为起止日期
      data.forEach(item => {
        item.timeContainer = []
        item.timeContainer.push(item.dateStartTime)
        item.timeContainer.push(item.dateEndTime)
      })
      return true;
    },
  }
};
export default extension;